//트리 선택 시 해당 정보를 저장
var treeId = "";
// 시스템/사용자 구분
var sid = "";
// 그룹/파일 구분
var gid = "";
// 시스템/사용자 ID
var cid = "";
// 시스템/사용자 트리탭을 선택했을 때 하위 트리노드가 선택되지 않아도
// 그룹추가 팝업을 띄우기 위해 탭을 선택할 때 값 세팅
var tabId = "";

$(document).ready(function(){
	//get방식의 파라메터를 파싱
	responseParamSetting();
	
	//url 추출
	var url = $.url();
	var seg_length = url.segment().length;
	//서브메뉴가 있을 경우와 없을 경우를 구분
	if( seg_length > 4 ) {
		seg = url.segment(url.segment().length-2);
	} else {
		seg = url.segment(url.segment().length-1);
	}
	
	//대메뉴 링크 세팅
	$("ul.depth_1 > li > a > img").each(function( index ) {
		var src = $(this).attr("src");
		var id = $(this).attr("id"); 
		var srcArray = new Array(3);
		srcArray[0] = src.substring(0,src.lastIndexOf("/"));
		srcArray[1] = src.substring(src.lastIndexOf("/")+1,src.lastIndexOf(".")).replace("_on","");
		srcArray[2] = src.substring(src.lastIndexOf(".")+1,src.length);
		
		if( id == seg ) {
			//현재 url 정보와 이미지 아이디가 동일할 경우 on버튼 표시
			srcArray[1] = srcArray[1] + "_on";
		}
		$(this).attr("src",srcArray[0]+"/"+srcArray[1]+"."+srcArray[2]);
		
		//대메뉴 이미지마다 클릭이벤트 연결
		$(this).on("click", function(event){
			//var subId = $(this).parent().attr("href").replace("#","");
			var subId = $(this).parent().attr("id");
			if( subId == "" ) {
				alert("준비중 입니다.");
			} else {
				//트리의 노드가 선택 되지 않았을 경우 링크이동을 하지 않는다
				var param = checkTreeId();
				if( param == false ) {
					return false;
				}
				//서브메뉴 유무에따른 폴더구조 분기
				var linkUrl = "";
				if( id == "account" || id == "auth" || id == "status" || id == "system" || id == "user" ){
					linkUrl = "/jsp/admin/"+id+"/"+subId+"/"+subId+".jsp";
				}else{
					linkUrl = "/jsp/admin/"+id+"/"+subId+".jsp";
				}
				//alert(linkUrl);return false;
				location.href = linkUrl + param;
			}
		});
	});
	//서브메뉴 링크 세팅
	if( $("ul.depth_2 > li > a > img").length > 0 ) {
		seg_last = url.segment(url.segment().length);
		seg_last = seg_last.substring(0, seg_last.indexOf(".jsp"));
		//account전용 체크
		var account_check = "account";
		if( seg == account_check ) {
			if( seg_last.indexOf("_") > -1 ) {
				seg_last = seg_last.substring(0, seg_last.indexOf("_"));
			}
		}
		$("ul.depth_2 > li > a > img").each(function( index ) {
			var src = $(this).attr("src");
			var srcArray = new Array(3);
			srcArray[0] = src.substring(0,src.lastIndexOf("/"));
			srcArray[1] = src.substring(src.lastIndexOf("/")+1,src.lastIndexOf(".")).replace("_on","");
			srcArray[2] = src.substring(src.lastIndexOf(".")+1,src.length);
			//var subId = $(this).parent().attr("href").replace("#","");
			var subId = $(this).parent().attr("id");
			if( subId == seg_last ) {
				//현재 url 정보와 이미지 아이디가 동일할 경우 on버튼 표시
				srcArray[1] = srcArray[1] + "_on";
			}
			$(this).attr("src",srcArray[0]+"/"+srcArray[1]+"."+srcArray[2]);
			
			$(this).on("click", function(event){
				//트리의 노드가 선택 되지 않았을 경우 링크이동을 하지 않는다
				var param = checkTreeId();
				if( param == false ) {
					return false;
				}
				var linkUrl = "/jsp/admin/"+seg+"/"+subId+"/"+subId+".jsp" + param;
				if( seg == "policy" ) {
					loadPolicySubPage(subId);
				} else {
					location.href = linkUrl;
				}
			});
		});
	}
	//트리 초기 로딩 
	loadTree(sid);
	//트리 탭 링크 세팅
	$("#tree_user").on("click", function(event){
		var id = $(this).attr("id").replace("tree_","");
		loadTree(id);
	});
	$("#tree_system").on("click", function(event){
		var id = $(this).attr("id").replace("tree_","");
		loadTree(id);
	});
	
	//그룹 링크 세팅
	$("ul.group_unit > li").each(function( index ) {
		$(this).on("click", function(event){
			var name = $(this).attr("class");
			var url = "";
			if( name == "group_add" || name == "group_edit" ) {
				url = "/jsp/tree/"+tabId+"_group_add.jsp";
			} else {
				url = "/jsp/tree/"+tabId+"_"+name+".jsp";
			}
			
			var param = {
				treeType : "test"
			};
			if( name == "group_add" || name == "group_edit" ) {
				openModal(url, param, 410, 0);
			} else if( name == "group_minus" ) {
				if( gid == "group" ) {
					var childNodeCheck = true;
					
					$("ul.filetree").find("span").each(function( index ) {
						if( $(this).attr("id") == treeId ) {
							if( $(this).parent().children().length > 0 ) {
								alert("하위 정보가 없는 그룹만 삭제 가능합니다.");
								childNodeCheck = false;
							}
						}
					});
					
					if( childNodeCheck == true ) {
						var del_msg = confirm("그룹을 삭제하시겠습니까?");
						if( del_msg ) {
							
						}
					}
				}
			}
		});
	});
	//로그아웃 이벤트
	$(".btn_logout").on("click", function(event) {
		alert("로그아웃 준비중");
	});
	//도움말 이벤트
	$(".btn_help").on("click", function(event) {
		alert("도움말 준비중");
	});
});

//정책일 경우 서브메뉴가 페이지이동보다 그리드 상세내용만 변경되는것 같아
//상세내용에 대한 부분만 로딩하는 방식으로 처리
function loadPolicySubPage(subId) {
	var linkUrl = getUrl()+subId+"/"+subId+".jsp";
	$("#subpage").load(linkUrl, function() {
		$("ul.depth_2 > li > a > img").each(function( index ) {
			var src = $(this).attr("src");
			var imgId = $(this).attr("id");
			var srcArray = new Array(3);
			srcArray[0] = src.substring(0,src.lastIndexOf("/"));
			srcArray[1] = src.substring(src.lastIndexOf("/")+1,src.lastIndexOf(".")).replace("_on","");
			srcArray[2] = src.substring(src.lastIndexOf(".")+1,src.length);
			
			if( ("policy_"+subId) == imgId ) {
				//현재 url 정보와 이미지 아이디가 동일할 경우 on버튼 표시
				srcArray[1] = srcArray[1] + "_on";
			}
			$(this).attr("src",srcArray[0]+"/"+srcArray[1]+"."+srcArray[2]);
		});
		
		if( subId == "basic" ) {
			$("#btn_save").parent().show();
			$("#btn_del").parent().hide();
		} else {
			$("#btn_save").parent().hide();
			$("#btn_del").parent().show();
		}
	});
}

//현재 url 가져오기
function getUrl() {
	var url = $.url();
	var link = "/";
	for( var ii=1; ii<(url.segment().length); ii++ ) {
		link += url.segment(ii)+"/";
	}
	return link;
}

//대메뉴, 서브메뉴 선택 할 때마다 트리정보가 선택되어있지 않을 경우 페이지 이동 불가
function checkTreeId() {
	if( treeId == null || treeId == "" ) {
		return false;
	} else {
		var idCompare = sid+":"+gid+":"+cid;
		if( treeId != idCompare ) {
			return false;
		}
		var arr = treeId.split(":");
		sid = arr[0];
		gid = arr[1];
		cid = arr[2];
		var param = "?";
		param += "sid="+sid+"&";
		param += "gid="+gid+"&";
		param += "cid="+cid;
		return param;
	}
}

//get방식으로 정보들을 이동시키는데 파라메터만 파싱해서 변수에 입력
function responseParamSetting() {
	if( location.search == null || location.search == "" ) {
		return;
	}
	var str = location.search.substring(1);
	var split = str.split("&");
	for( var ii=0; ii<split.length; ii++ ) {
		var kv = split[ii].split("=");
		if( kv[0] == "sid" ) {
			sid = kv[1];
		}
		if( kv[0] == "gid" ) {
			gid = kv[1];
		}
		if( kv[0] == "cid" ) {
			cid = kv[1];
		}
	}
	treeId = sid+":"+gid+":"+cid;
	$(treeId).focus();
}

//트리로딩
function loadTree(id) {
	tabId = id;
	var url = "/jsp/tree/tree_ajax.jsp";
	//탭만 선택 후 그룹추가를 할 경우를 위해 sid값만 세팅
	sid = id;
	//var param = {
	//	treeType : id
	//};
	var param = "treeType="+id;
	//$(".lnb_tree").load(url,param, loadTreeSuccess(id));
	$("#browser").load(url,param, function() {
		$("#browser").treeview();
		changeTab(id);

		//트리안에 있는 노드마다 이벤트 설정
		$("ul.filetree").find("span").each(function( index ) {
			$(this).on("click", function(event){
				treeNodeDataSet($(this).attr("id"));
				var url = $.url().data.attr.source;
				url = url.substring(0,url.indexOf("?"));
				url = url + checkTreeId();
				location.href = url;
			});
		});
		treeNodeDataSet($("ul.filetree").find("span:first").attr("id"));
	});
}

function treeNodeDataSet( obj ) {
	treeId = obj;
	if( treeId != "" && treeId != undefined ) {
		var treeArray = treeId.split(":");
		sid = treeArray[0];
		gid = treeArray[1];
		cid = treeArray[2];
	}
}

//트리 탭 활성화
function changeTab(id) {
	var src = $("#tree_"+id).attr("src");
	if( !(src == null || src == "" || src == undefined) ) {
		var srcUrl = src.substring(0,src.lastIndexOf("/")+1);
		if( id == "system" ) {
			$("#tree_system").attr("src",srcUrl+"lnb_tab1_on.gif");
			$("#tree_user").attr("src",srcUrl+"lnb_tab2.gif");
		} else {
			$("#tree_system").attr("src",srcUrl+"lnb_tab1.gif");
			$("#tree_user").attr("src",srcUrl+"lnb_tab2_on.gif");
		}
	}
}

//모달 팝업 공통 호출 함수
function openModal(url, param, width, height) {
	var option = "";
	if( !(height == null || height == "" || height == undefined || height == "0") ) {
		option += "dialogHeight:"+height+"px;";
	}
	if( !(width == null || width == "" || width == undefined || width == "0") ) {
		option += "dialogWidth:"+width+"px;";
	}
	option += "center:Yes; help:No; resizable:No; status:No;";
	window.showModalDialog(url, param, option);
	
}

function openUrl( tform, targetURL,  target, parameter)
{	

	if ( target==""){
		target="new";
	}
	
	tform.action=targetURL;
	tform.target=target;
	
	// get방식의 파라미터를 통합한다.
	form_names=parameter;
	
	FormCheck(tform);
}

function FormCheck( form ){

	if(form == null || form == undefined ){
		alert(isnot_form);
	}else if( form.ciphertext == null || form.ciphertext == "undefined" ){
		alert(isnot_cipher);
		form.submit();
	}else{
		//form내에 있는 모든 변수값을 통합한다. 
		form_names +=  _MakeSendingForm(form); 
		_MakeFieldsNULL(form);
	
		// forn_names의 data를 utf-8로 encoding한후 다시 '+'를 '%2B' 변환한다.
		// java.net.URLDecoder에서 '+'를 ' '로 리턴하기 때문
		form_names = encodeURI(form_names);
		form_names = form_names.replace(/\+/g, "%2B");

		form.ciphertext.value = form_names;
		form.submit();
	
		form_names="";
	}
}


function _MakeSendingForm( form ) {
	var name = ""; 
	var value = "";
	var retStr = ""; 
	var nElements = form.elements.length;
	
	//form.ciphertext.value = "";
 
	for (var i = 0 ; i < nElements ; i++ ) {
		name = form.elements[i].name;
		//alert(name);
		// test if the character '&' exists in the string. - Feb 1, 2002
		if ( name.indexOf("&") > -1) {
			return;
		}

		if ( name != null && name != "" && name != "ciphertext" ) {
			if ( (form.elements[i].type != "submit") && 
				 (form.elements[i].type != "button") && 
				 (form.elements[i].type != "reset") ) {
				
				if ( (form.elements[i].type == "radio") || 
					 (form.elements[i].type == "checkbox") ) {
					// The case of radio button or checkbox
					if (form.elements[i].checked == true ) {
						value = form.elements[i].value;
						retStr += name + "=";
						if ( value != null)	{
							retStr += value + "&";
						}
					}
				} else {
					// not radio button or checkbox
					if ( form.elements[i].type == "select-one" ) {
						var index = form.elements[i].selectedIndex;
						if ( form.elements[i].options[index].value != '' ) {
							value = form.elements[i].options[index].value;
						} else {
							//value = _Escape( form.elements[i].options[index].text );
							value = form.elements[i].options[index].text;
						}
						retStr += name + "=";
						if ( value != null)	{
							// alter '&' into '%amp;%'. - Feb 1, 2002
							value = value.replace(/&/g, "%amp;%");
							retStr += value + "&";
						}
					} else if ( form.elements[i].type == "hidden" ) {
						value = form.elements[i].value;
						retStr += name + "=";
						if ( value != null)	{
							// alter '&' into '%amp;%'. - Feb 1, 2002
							value = value.replace(/&/g, "%amp;%");
							retStr += value + "&";
						}
					} else if ( form.elements[i].type == "file" ) {
					} else {
						//value = _Escape( form.elements[i].value );
						value = form.elements[i].value;
						retStr += name + "=";
						if ( value != null)	{
							// alter '&' into '%amp;%'. - Feb 1, 2002
							value = value.replace(/&/g, "%amp;%");
							retStr += value + "&";
						}
					}
				}
			}// submit, button, reset 이 아닌경우 
		} // Enf of if loop  
	} // End of for loop
	//alert( retStr);
	retStr += "&";
	return retStr;
}

function _MakeFieldsNULL(form) {
	var nElements = form.elements.length;
	for (var i = 0 ; i < nElements ; i++ ) {
		if ( (form.elements[i].type != "submit") && 
			 (form.elements[i].type != "button") && 
			 (form.elements[i].type != "reset") ) {
			if ( (form.elements[i].name != "ciphertext") ) {
				form.elements[i].value = "";
			}
		}
	} // End of for loop
}


/*
 * Ajax 호출 공통 모듈
 * 
 */
//이벤트 발생 시 더블클릭 등 1번이상 작동을 막기 위해 이벤트 변수를 저장
var eventTarget;

//=====================================
// 페이지 호출 부분
//=====================================
//중복요청을 막기위해 호출 시 해당 버튼을 비활성화 시킨다
function allDisableButton() {
	
}

//요청이 종료될 경우 다시 버튼을 활성화 시킨다
function allEnableButton() {
	
}

//ajax 호출 전 처리할 로직 수행 (ex : 로딩 이미지 호출 등 )
function beforeAjax() {
}

//ajax 호출 후 처리할 로직 수행 (ex : 로딩 이미지 호출 등 )
function completeAjax() {

}

//ajax 에러 시 호출
function errorAjax( request, status, error ) {
	alert("code : "+error+"\r\nmessage : "+request.responseText);
}

//ajax 호출 공통모듈
/*
 * url : 요청할 url 주소
 * data : { KEY : VALUE, KEY : VALUE } 형식
 * serviceName : 호출한 서비스 key ( return시 구분하기 위해 )
 */
function callAjax( url, data, serviceName ) {
	try {
		allDisableButton();
	} catch ( e ) {
		alert(e);
		return false;
	}

	var contentType = "application/x-www-form-urlencoded; charset=utf-8";
	
	$.ajax({
		type : "POST",
		url : url,
		dataType : "json",
		data: data,
		contentType: contentType,
		
		error : function(request, status, error) {
			errorAjax( request, status, error );
		},
		success : function (data) {
			if( serviceName == "TREE" ) {
				successTreeAjax(data);
			} else {
				successAjax(data,serviceName);
			}
		},
		beforeSend : function() {
			beforeAjax();
		},
		complete : function () {
			completeAjax();
		}
	});
	
	try {
		allEnableButton();
	} catch ( e ) {
		alert(e);
		return false;
	}
}